package edu.gatech.oad.antlab.person;

import java.util.Random;

/**
 *  A simple class for person 2
 *  returns their name and a
 *  modified string 
 *
 * @author Bob
 * @version 1.1
 */
public class Person2 {
    /** Holds the persons real name */
    private String name;
	 	/**
	 * The constructor, takes in the persons
	 * name
	 * @param pname the person's real name
	 */
	 public Person2(String pname) {
	   name = pname;
	 }
	/**
	 * This method should take the string
	 * input and return its characters in
	 * random order.
	 * given "gtg123b" it should return
	 * something like "g3tb1g2".
	 *
	 * @param input the string to be modified
	 * @return the modified string
	 */
	private String calc(String input) {
		char[] anArray=input.toCharArray();
		int[] rand=new int[anArray.length];
		for(int t=0;t<rand.length;t++)
		{
			rand[t]=-1;
		}
		boolean flag=false;boolean flag2=false;
		Random randNum=new Random();
		int i;
		int index=0;
		String randString=new String();
		for(i=0;i<anArray.length;i++)
		{
			flag2=false;
			while(flag2==false)
			{
			int r=randNum.nextInt(anArray.length);
			for(int ir:rand)
			{
				if(r==ir)
					{
					flag=true;
					break;
					}
				else flag=false;
			}
			if(flag==false){
				randString+=anArray[r];
				rand[index++]=r;
				flag2=true;
			}
			else if(flag==true)
				flag2=false;
		}
		}
		return randString;
	}
	/**
	 * Return a string rep of this object
	 * that varies with an input string
	 *
	 * @param input the varying string
	 * @return the string representing the 
	 *         object
	 */
	public String toString(String input) {
	  return name + calc(input);
	}
}
